]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
10 months agostatus/volume: Use default color for muted microphone indicator
revisto [Tue, 16 Dec 2025 15:58:59 +0000 (19:28 +0330)]
status/volume: Use default color for muted microphone indicator

The muted indicator status is currently hard to distinguish from the
unmuted one. As there is no privacy concern when muted, don't apply
the privacy-indicator styling in that state so the states become
more distinct.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8077
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4001>

10 months agooverviewControls: Use ease-out-sine when entering overview and app grid
Hari Rana [Sat, 13 Dec 2025 03:36:57 +0000 (22:36 -0500)]
overviewControls: Use ease-out-sine when entering overview and app grid

Using animations with slower initial curves on display-wide
layout shifts may provide a smoother experience to users of
low(er) refresh rate and/or large(r) displays, as they avoid
skipping large chunks of frames, making it less choppy at
the beginning of the animation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4000>

10 months agocss: Define a higher contrast insensitive text style for card elements
Sam Hewitt [Wed, 10 Dec 2025 14:46:37 +0000 (11:16 -0330)]
css: Define a higher contrast insensitive text style for card elements

- fixes an oversight in color definitions for insensitive style text on cards where contrast was insufficient

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8683
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3998>

10 months agoscreenShield: Fix user deselection after idle in greeter
Lukas Schmelting [Fri, 5 Dec 2025 08:15:33 +0000 (09:15 +0100)]
screenShield: Fix user deselection after idle in greeter

When the session goes idle, _maybeCancelDialog() cancels any ongoing
authentication dialog. Commit b16ee1a added code to grab focus after
cancellation, ensuring it stayed on the lock screen curtain rather than
wherever cancel() placed it. This was needed to handle keyboard events
like Enter to raise the unlock dialog.

Commit 727c84251 changed this to grab focus on the dialog itself, since
the lock screen architecture had evolved. However, in the greeter case
there is no separate curtain - the LoginDialog is shown directly and
cancel() already restores focus to the user list via _showUserList().
The additional focus grab on the dialog container moved focus away from
the selected user as soon as the screen began to dim, causing the
username to appear deselected when returning from idle.

Similarly, _ensureUnlockDialog() and _resetLockScreen() grabbed focus on
the dialog container when the screen fully blanked, causing the same
issue.

For the greeter, replace grab_key_focus() with activate(), which
delegates to LoginDialog.activate() and properly focuses the user list.
For the unlock dialog, keep the original grab_key_focus() behavior -
calling UnlockDialog.activate() would invoke _showPrompt(), which would
interfere with commit 4bfa30085 that returns to the clock view after
suspend.

See-also: b16ee1a3a6c02facc803be45d2859e53c906decd
See-also: 727c84251d6e536c5658962b4fd4ec89acdc832f
See-also: 4bfa300850045dcd7c974bdd128adef13f2777b1
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1132
Closes: https://gitlab.gnome.org/GNOME/gdm/-/issues/599
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3993>

10 months agoscreenshot: Improve accessibility of the icon label buttons
Lukáš Tyrychtr [Fri, 26 Sep 2025 15:35:20 +0000 (17:35 +0200)]
screenshot: Improve accessibility of the icon label buttons

Set the label actor properly so the buttons have a label.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3893>

10 months agostatus/powerProfiles: Indicate non-default power mode in top bar
Florian Müllner [Thu, 13 Nov 2025 19:01:04 +0000 (20:01 +0100)]
status/powerProfiles: Indicate non-default power mode in top bar

It is quite easy to switch the power profile for some specific
purpose, and then forgetting to change it back and experiencing
unexpected performance behavior later.

To help with that, indicate the active power profile in the top
bar if it diverges from the default 'balanced' one.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7440
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3961>

10 months agopanel: Move power profiles indicator next to the system one
Florian Müllner [Thu, 13 Nov 2025 19:13:37 +0000 (20:13 +0100)]
panel: Move power profiles indicator next to the system one

For devices with a battery, the system indicator shows the current
charge level. As power profiles are related to power, it makes sense
to keep the two indicators next to each other.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3961>

10 months agoswipeTracker: Handle touchpad gestures on actor
Florian Müllner [Tue, 9 Dec 2025 13:33:38 +0000 (14:33 +0100)]
swipeTracker: Handle touchpad gestures on actor

Touchscreen gestures and scrolling are already handled by events
on the associated actor rather than the stage. There's no good
reason to not do the same for touchpad gestures as well.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8850
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3997>

11 months agoenvironment: Ignore prepare/cleanup in no duration animations
Marco Trevisan (Treviño) [Tue, 2 Dec 2025 03:12:30 +0000 (04:12 +0100)]
environment: Ignore prepare/cleanup in no duration animations

These animations are just completing immediately, so there is no need to
increase the complexity by calling unneeded code

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3992>

11 months agoenvironment: Split out the prepare and cleanup animation code
Marco Trevisan (Treviño) [Fri, 5 Dec 2025 22:39:23 +0000 (23:39 +0100)]
environment: Split out the prepare and cleanup animation code

We do the same twice, and it's not trivial code anymore, so let's
separate this into another function which returns the prepare and cleanup
functions

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3992>

11 months agoworkspaceAnimation: Use separate WorkspaceBackground class
Florian Müllner [Fri, 5 Dec 2025 09:06:32 +0000 (10:06 +0100)]
workspaceAnimation: Use separate WorkspaceBackground class

Separating WorkspaceGroup and WorkspaceBackground allows each to
track its own set of windows without special-casing exceptions.

This will also give us more flexibility in the future, if we need
to reuse the background elsewhere. This may happen if we optionally
change the animation to a crossfade for the new `reduced-motion`
setting.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3995>

11 months agoworkspaceAnimation: Split out BaseWorkspaceGroup
Florian Müllner [Fri, 5 Dec 2025 08:25:30 +0000 (09:25 +0100)]
workspaceAnimation: Split out BaseWorkspaceGroup

Since we started to show DESKTOP windows as part of the background
during the workspace animation, we need to track both the windows
relevant for the monitor/workspace and DESKTOP windows.

We are about to split out the background handling into its own class.

To prepare for this, split out a BaseWorkspaceGroup class that handles the
basic "create clones of relevant windows and track them" functionality
common to both cases.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3995>

11 months agoenvironment: Ignore animation events after shutdown
Marco Trevisan (Treviño) [Fri, 5 Dec 2025 22:14:29 +0000 (23:14 +0100)]
environment: Ignore animation events after shutdown

As soon as the shutdown starts, any animation event does not make sense,
although during this phase the clutter timelines may still proceed and
potentially calling invalid code in their callbacks.

Prevent this from happening by disconnecting from any timeline signal
we are connected to as soon as the `shutdown` signal is emitted

Co-Authored-By: Florian Müllner <fmuellner@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3996>

11 months agoscreenshot: End screencast with same keybinding as start screencast
Ian Off [Thu, 21 Aug 2025 04:27:43 +0000 (23:27 -0500)]
screenshot: End screencast with same keybinding as start screencast

Currently, the screencast keyboard shortcut shows the UI to begin a
screencast, but there is no way to end it with a keyboard shortcut.

This behavior is inconvenient and seems to be a regression, as a wide
variety of online resources recommend using the same shortcut to start
and end screencasts.

This commit introduces a simple check when the showScreenRecordingUI
function is called by the show-screen-recording-ui keybinding.
If the showScreenRecordingUI function is called while a screencast
is in progress, the stopScreencast function is called instead
of opening the screenshot UI in screencast mode.

Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5386

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3847>

11 months agoenvironment: Do not try to animate a St.Adjustment with unmapped actor
Marco Trevisan (Treviño) [Thu, 4 Dec 2025 04:18:04 +0000 (05:18 +0100)]
environment: Do not try to animate a St.Adjustment with unmapped actor

We were already doing this for actual actors, but the case was
skipped in the St.Adjustment case.

However, as it is an animatable we can just use its related actor as
reference, and keep the same logic despite their actual object type

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3991>

11 months agoenvironment: Generalize easeActorProperty to animatable case
Marco Trevisan (Treviño) [Thu, 4 Dec 2025 04:14:23 +0000 (05:14 +0100)]
environment: Generalize easeActorProperty to animatable case

We're not handling actors only with it but also St.Adjustment that is a
Clutter.Animatable, so let's name it for what it is, and adjust the
parameter so that its type is not given for granted

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3991>

11 months agooverviewControls: Wait for all animation promises on startup
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:18:19 +0000 (05:18 +0100)]
overviewControls: Wait for all animation promises on startup

Currently on startup we're just waiting for a single animation (the dash
one) being completed, while this is acceptable since the animation
duration is not shorter or longer than others, it's still not clean, as
technically we should just wait for all the pending animations of the
set before calling the startup animation completed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3944>

11 months agoci: Bump mutter image
Florian Müllner [Fri, 5 Dec 2025 12:38:25 +0000 (13:38 +0100)]
ci: Bump mutter image

Mutter bumped its libinput requirement, so pull in the new version.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3994>

11 months agoUpdate Russian translation
Artur S0 [Tue, 2 Dec 2025 16:15:26 +0000 (16:15 +0000)]
Update Russian translation

11 months agolayout: Clarify startup animation code
Florian Müllner [Thu, 27 Nov 2025 22:41:35 +0000 (23:41 +0100)]
layout: Clarify startup animation code

Once the LayoutManager is initialized, we do the startup animation
that consists of 4 steps:

 1. load the system background
 2. prepare the animation
 3. run the animation
 4. complete initialization post-animation

This isn't immediately obvious right now, as the individual steps
are chained in various ways.

It also doesn't help that it's `_loadBackground()` that starts the
chain, as that hardly implies "startup animation".

Clarify that code by adding an async `_doStartupAnimation()` method
that handles all steps in order.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3988>

11 months agolayout: Resolve immediately after loading the background
Florian Müllner [Fri, 28 Nov 2025 00:43:33 +0000 (01:43 +0100)]
layout: Resolve immediately after loading the background

We currently resolve the promise in a low-priority idle handler
after the background was loaded, so that the system can settle
down after the initial load before doing the animation.

Promises are already resolved on the main loop (albeit with
a high priority), so hopefully the explicit idle source isn't
necessary anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3988>

11 months agolayout: Use promise to wait for background to load
Florian Müllner [Fri, 28 Nov 2025 00:13:29 +0000 (01:13 +0100)]
layout: Use promise to wait for background to load

This allows us to separate the end of the loading operation
from the steps that follow it. We will soon use that to
express the startup animation as a series of (async) steps
instead of a chain of function calls.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3988>

11 months agolayout: Use promise to ensure primary monitor
Florian Müllner [Thu, 27 Nov 2025 21:47:46 +0000 (22:47 +0100)]
layout: Use promise to ensure primary monitor

Both loading the system background and setting up the startup animation
depends on having a primary monitor, so we wait for the monitor to
appear if necessary.

Currently this is done differently in each case, once by having a hook
to recall a method when the monitor appears, and once by re-running an
idle handler.

Replace this with an async `_ensurePrimaryMonitor()` method that we can
use to await the primary monitor where needed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3988>

11 months agoUpdate Romanian translation
Antonio Marin [Mon, 1 Dec 2025 17:12:41 +0000 (17:12 +0000)]
Update Romanian translation

11 months agocapsLockWarning: Mark as not visible to a11y tree when hidden
Lukáš Tyrychtr [Tue, 25 Nov 2025 14:26:09 +0000 (15:26 +0100)]
capsLockWarning: Mark as not visible to a11y tree when hidden

We're animating it away, but not for the a11y tree.

This fixes it, so the caps lock warning is not read regardless of the state
of the key.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3981>

11 months agoUpdate Slovenian translation
Martin [Sat, 29 Nov 2025 16:53:31 +0000 (16:53 +0000)]
Update Slovenian translation

11 months agoci: Clean up the dependencies
Debarshi Ray [Fri, 28 Nov 2025 21:24:17 +0000 (22:24 +0100)]
ci: Clean up the dependencies

The pkgconfig(gobject-introspection-1.0) dependency was added in commit
0a420404c603 ("ci: Update JS tooling") as a build-time dependency of gjs
at the time time, even though it wasn't being built from source, and the
pre-built gjs included in the image was being used.

What's needed is a C compiler to build gnome-extensions-tool, and GCC
was being pulled in by pkgconfig(gobject-introspection-1.0) through
libtool.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2193
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3989>

11 months agoscreenShield: Avoid unfocused authentication view after resume
Lukas Schmelting [Thu, 27 Nov 2025 22:58:32 +0000 (23:58 +0100)]
screenShield: Avoid unfocused authentication view after resume

When suspending on the authentication page of the lock screen in a user
session, the session resumes with the authentication dialog shown but
its password entry field unfocused. Instead, focus moves to the
authentication dialog itself while _ensureUnlockDialog() in
screenShield.js is called on resume.

Avoid this edge case by switching to the clock view instead before
suspend, which also provides a more consistent user experience.

Co-authored-by: Florian Müllner <fmuellner@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3962>

11 months agojs: Export all animation durations and related values
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 10:43:28 +0000 (11:43 +0100)]
js: Export all animation durations and related values

Extensions may want to use these values as references for performing
similar animations or to replicate them, so just export them as constant
values.

So, it won't be possible to change them but they won't be fully private
either

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3985>

11 months agomessageTray: Disconnect to global signals on destruction
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 23:28:12 +0000 (00:28 +0100)]
messageTray: Disconnect to global signals on destruction

The global display object has always a longer lifetime than anything
that is initialized from JS, so avoid signals that it may emit to be
handled at later point.

It handles issues such as:
  (gnome-shell:2429): Gjs-CRITICAL **: 23:18:35.025: Object
  Gjs_ui_messageTray_MessageTray (0x3440ed60), has been already disposed —
  impossible to set any property on it.
  This might be caused by the object having been destroyed from C code using
  something such as destroy(), dispose(), or remove() vfuncs.
  == Stack trace for context 0x31073eb0 ==
  #0       348db378 i   resource:///org/gnome/shell/ui/messageTray.js:1046 (3a8ac3a71f60 @ 104)
  #1       348db2d8 i   resource:///org/gnome/shell/ui/main.js:277 (3a8ac3a0b100 @ 119)

Seen in: https://gitlab.gnome.org/GNOME/gnome-shell/-/jobs/5846454

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3987>

11 months agotest-tool: Add --extension option
Florian Müllner [Thu, 27 Nov 2025 17:56:17 +0000 (18:56 +0100)]
test-tool: Add --extension option

The tool is currently used for running gnome-shell's own tests, but
it could also be used by extensions to automate their testing.

To support that use case, add an --extension option that installs
the provided extension zip and enables the extension before starting
gnome-shell.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agoextension-tool/install: Add --print-uuid option
Florian Müllner [Thu, 27 Nov 2025 17:30:26 +0000 (18:30 +0100)]
extension-tool/install: Add --print-uuid option

This is meant to help with automation, where some follow-up actions
are needed after installing an arbitrary extension, like

```sh
$ uuid=$(gnome-extensions install --print-uuid extension.zip)
$ gsettings set org.gnome.shell enabled-extensions [\'$uuid\']
```

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Add option to run without animations
Florian Müllner [Thu, 27 Nov 2025 15:45:35 +0000 (16:45 +0100)]
test-tool: Add option to run without animations

We currently force animations, so the test reflect the typical
usage even in environments without hardware acceleration.

However testing with animations disabled can be useful as well,
so allow that with a CLI option.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Set up GSettings keyfile
Florian Müllner [Thu, 27 Nov 2025 15:29:44 +0000 (16:29 +0100)]
test-tool: Set up GSettings keyfile

Even with a separate XDG_CONFIG_HOME, settings may still be picked
up from the session's dconf instance (although the tool is typically
run through dbus-run-session).

To really ensure that we control the settings, we can force a different
backend. The 'memory' backend would be enough to ensure default values,
however using the 'keyfile' backend means we can also inject non-default
values.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Set up a temporary xdg-home directory
Florian Müllner [Thu, 27 Nov 2025 13:43:43 +0000 (14:43 +0100)]
test-tool: Set up a temporary xdg-home directory

Currently the launched gnome-shell instance uses the regular xdg-home
directories, which means it picks up settings, extensions etc. from
the current user.

Avoid this by pointing the xdg-home dirs to a temporary directory, so
everything that respects the basedir spec runs with a clean slate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove --wayland/-x11 options
Florian Müllner [Thu, 27 Nov 2025 13:25:15 +0000 (14:25 +0100)]
test-tool: Remove --wayland/-x11 options

Running as a wayland compositor is the only available option nowadays.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Replace --nested with --devkit
Florian Müllner [Thu, 27 Nov 2025 13:19:13 +0000 (14:19 +0100)]
test-tool: Replace --nested with --devkit

With the removal of the X11 backend, the --nested option isn't just
unavailable by default, but gone for good.

Switch to devkit to allow running tests in a window inside the session.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove option to upload perf reports
Florian Müllner [Thu, 27 Nov 2025 14:06:12 +0000 (15:06 +0100)]
test-tool: Remove option to upload perf reports

If memory serves well, uploads happened to a server in Owen's living
room. It is doubtful that the server-side still exists anywhere, or
that anyone has uploaded any reports in the last 15 years, so stop
carrying that code around.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove unused imports
Florian Müllner [Thu, 27 Nov 2025 14:18:38 +0000 (15:18 +0100)]
test-tool: Remove unused imports

Fixes: ee7e62c9c8 ("perf-tool: Spawn perf-tool-helper from gnome-shell")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Adjust name in --version
Florian Müllner [Thu, 27 Nov 2025 14:41:44 +0000 (15:41 +0100)]
test-tool: Adjust name in --version

The tool was renamed from "perf-tool" a while ago, to reflect
that its purpose has shifted from collecting performance data
to running gnome-shell with scripted tests.

Fixes: 9bb003463c ("test-tool: Rename perf-tool")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agooverviewControls: Only import STARTUP_ANIMATION_TIME from layout
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 10:27:35 +0000 (11:27 +0100)]
overviewControls: Only import STARTUP_ANIMATION_TIME from layout

It's the only value we use from that module, and this would ensure that
the value is actually imported and it's not potentially an undefined
value

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3982>

11 months agolayout: Export STARTUP_ANIMATION_TIME
Marco Trevisan (Treviño) [Tue, 25 Nov 2025 21:40:00 +0000 (22:40 +0100)]
layout: Export STARTUP_ANIMATION_TIME

We are using it in overviewControls but the value is not exported.

This caused an issue when the animations are not enabled, since in a
racy way (e.g. only sometimes, depending on the init speed) the value
was undefined, and so we ended up falling back to the default animation
duration time.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3982>

11 months agoenvironment: Always honor easing duration settings
Marco Trevisan (Treviño) [Tue, 25 Nov 2025 21:48:54 +0000 (22:48 +0100)]
environment: Always honor easing duration settings

In case an actor easing is created without an explicit duration, we
should rely to the default animation that Clutter.Actor.save_easing_state()
sets to 250ms.

This fine in normal use cases, but in case the animations are disabled
the current code skips calling our Clutter.Actor.set_easing_duration()
override, and so we just end up leaving the actor easing time to 250ms,
not respecting the St settings

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3983>

11 months agoUpdate Basque translation
Asier Saratsua Garmendia [Mon, 24 Nov 2025 18:47:28 +0000 (18:47 +0000)]
Update Basque translation

11 months agoUpdate Indonesian translation
Andika Triwidada [Mon, 24 Nov 2025 12:41:20 +0000 (12:41 +0000)]
Update Indonesian translation

(cherry picked from commit 02901236af96666807087ee55cd3fba98e1201ba)

11 months agoci: Bump mutter image
Florian Müllner [Sat, 22 Nov 2025 01:32:05 +0000 (02:32 +0100)]
ci: Bump mutter image

Pull in the original gdk-pixbuf2 package with the glycin loader
again.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3973>

11 months agoRevert "ci: Reinstall gdk-pixbuf2 package"
Florian Müllner [Sat, 22 Nov 2025 01:26:34 +0000 (02:26 +0100)]
Revert "ci: Reinstall gdk-pixbuf2 package"

The mutter image no longer rebuilds gdk-pixbuf2 without
the glycin loader, so SVG support works again without
reinstalling the package.

This reverts commit 950e6c5c027342d2749488a63aeaf8fcfc20b4ed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3973>

11 months agomessageList: Check if Message is expanded
SymphonySimper [Sat, 22 Nov 2025 13:01:05 +0000 (18:31 +0530)]
messageList: Check if Message is expanded

Check if Message is expanded in expand method, to prevent rerunning the
expand animation when it's already expanded

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3978>

11 months agoscreenShield: Emit ::screen-lock-shown early with animated fades
Carlos Garnacho [Fri, 21 Nov 2025 13:46:03 +0000 (14:46 +0100)]
screenShield: Emit ::screen-lock-shown early with animated fades

If the screen is locked with animatedFade parameter enabled, the
screenShield currently defers the emission of this signal until the
lightbox toggles on. However the lightbox might be prevented from
ever doing that by later input.

If this emission is delayed enough, it will result in ShellDBus
missing the D-Bus timeout for replying to the Lock request, since
it does rely on this signal being emitted in order to reply back.

It does however make sense to keep setting the active state after
the animation, so the inhibitors are synchronized at the point the
lightbox kicks in.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8644
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3971>

11 months agodash: Fix wrong separator position
Raghuveer Kasaraneni [Sun, 5 Sep 2021 08:33:18 +0000 (10:33 +0200)]
dash: Fix wrong separator position

The separator position takes drag placeholders into account, but not
any removed favorites that are currently animating out.

As a result, we may end up with the wrong position and some app icons appear
on the wrong side of the separator.

To fix, account for all items before the separator that are currently
animating out.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3966
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3799
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1973>

11 months agoUpdate Persian translation
سبحان [Fri, 21 Nov 2025 01:45:39 +0000 (01:45 +0000)]
Update Persian translation

11 months agorunDialog: Disable internal commands if parental controls are enabled
Philip Withnall [Thu, 20 Nov 2025 16:37:58 +0000 (16:37 +0000)]
runDialog: Disable internal commands if parental controls are enabled

This reduces the chance of the child user being able to monkey patch
gnome-shell to disable things like screen time limits using Looking
Glass.

Spotted by Sergey Bugaev.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3968>

11 months agoparentalControlsManager: Add more helper methods
Philip Withnall [Thu, 20 Nov 2025 16:32:18 +0000 (16:32 +0000)]
parentalControlsManager: Add more helper methods

For working out whether any parental controls apply to the current user.
These will be used in an upcoming commit.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3968>

11 months agorunDialog: Factor out calculation of whether to enable internal commands
Philip Withnall [Thu, 20 Nov 2025 16:31:46 +0000 (16:31 +0000)]
runDialog: Factor out calculation of whether to enable internal commands

This doesn’t result in any behaviour change at the moment, but will
simplify an upcoming commit.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3968>

11 months agoswipeTracker: Immediately flip delta in RTL locales
Florian Müllner [Thu, 20 Nov 2025 15:09:44 +0000 (16:09 +0100)]
swipeTracker: Immediately flip delta in RTL locales

The delta is currently flipped in a shared code path, after appending
the unmodified value to the event history. As a result, the calculated
final velocity for touchpad gestures is wrong in RTL locales.

Fix this by modifying the delta immediately when handling the events,
so that all other code operates on the correct values.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8840
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>

11 months agoswipeTracker: Flip pan gesture velocity in RTL locales
Florian Müllner [Thu, 20 Nov 2025 14:51:23 +0000 (15:51 +0100)]
swipeTracker: Flip pan gesture velocity in RTL locales

Like the gesture delta, the final velocity needs to be flipped in
RTL locales, otherwise we end up cancelling out the gesture progress.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>

11 months agoswipeTracker: Simplify finding previous point
Florian Müllner [Thu, 20 Nov 2025 13:34:21 +0000 (14:34 +0100)]
swipeTracker: Simplify finding previous point

We have findLastIndex() nowadays to search an array in reverse
direction.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3967>

11 months agosubprojects: Bump libshew revision
Florian Müllner [Wed, 19 Nov 2025 14:32:57 +0000 (15:32 +0100)]
subprojects: Bump libshew revision

With the X11 session gone, libshew dropped support for the X11 backend.

Bump the revision to pull in that change.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3964>

11 months agoshellDBus: Send an activation token for Accelerator(De)Activated
Sebastian Wick [Tue, 14 Oct 2025 20:36:16 +0000 (22:36 +0200)]
shellDBus: Send an activation token for Accelerator(De)Activated

This will be useful for the global shortcuts portal implementation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3917>

11 months agoUpdate Russian translation
Artur S0 [Mon, 17 Nov 2025 08:28:35 +0000 (08:28 +0000)]
Update Russian translation

11 months agotimeLimitsManager: Slightly tweak a comment for accuracy
Ignacy Kuchciński [Wed, 12 Nov 2025 15:55:09 +0000 (15:55 +0000)]
timeLimitsManager: Slightly tweak a comment for accuracy

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3958>

11 months agotimeLimitsManager: Batch-submit usage records to malcontent-timerd
Philip Withnall [Tue, 11 Nov 2025 15:31:22 +0000 (15:31 +0000)]
timeLimitsManager: Batch-submit usage records to malcontent-timerd

This was skipped in the first version of parental controls screen time
limits, because we forgot that `RecordUsage()` already allows batch
submission of usage records.

Rework the code to make one D-Bus call rather than O(N) calls.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3958>

11 months agoswitcherPopup: Fix switch-group mouse click regression
Håkon Hægland [Tue, 11 Nov 2025 18:46:32 +0000 (19:46 +0100)]
switcherPopup: Fix switch-group mouse click regression

The LongPressGesture 'may-recognize' callback in commit 314137c8c was
checking if clicks were inside '_switcherList', but thumbnails shown by
switch-group are siblings of _switcherList, not children.

This caused the gesture to incorrectly identify thumbnail clicks as
'outside' clicks, closing the popup before the click could complete.

Fix by adding a _isActorOutside() helper method that subclasses can
override to check additional containers. AppSwitcherPopup now properly
checks both _switcherList and _thumbnails.

Tested on Ubuntu 25.10 with GNOME Shell 49.0. Confirmed:
- switch-group mouse clicks now work
- switch-applications and switch-windows unaffected
- clicking outside the popup still closes it correctly
- no regressions introduced

Fixes: 314137c8c9 ("switcherPopup: Move to a ClutterGesture for closing the popup")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8812
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3959>

11 months agoUpdate Chinese (Taiwan) translation
Cheng-Chia Tseng [Mon, 10 Nov 2025 13:42:33 +0000 (13:42 +0000)]
Update Chinese (Taiwan) translation

(cherry picked from commit 318af150fbc8071b4bf20b545da5d97cf28a11ca)

12 months agomain: Register session with GDM on startup
Adrian Vovk [Thu, 1 May 2025 22:34:52 +0000 (18:34 -0400)]
main: Register session with GDM on startup

When no monitor is connected, gnome-shell starts but never emits
`startup-prepared` nor `startup-complete`. As a result, GDM never
detects that the shell has launched and plymouthd remains running,
preventing the system from reaching graphical.target.

Ensure that registerSessionWithGDM() is called even when no monitor
is connected, so GDM can terminate plymouthd and allow the system to
reach graphical.target properly.

Part of https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/285

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3708>

12 months agoUpdate Occitan translation
Quentin PAGÈS [Fri, 7 Nov 2025 18:10:11 +0000 (18:10 +0000)]
Update Occitan translation

12 months agoUpdate Persian translation
سبحان [Thu, 6 Nov 2025 19:29:16 +0000 (19:29 +0000)]
Update Persian translation

12 months agomessageList: Recognize URLHighlighter gesture only if clicking on an URL
Carlos Garnacho [Thu, 6 Nov 2025 13:37:06 +0000 (14:37 +0100)]
messageList: Recognize URLHighlighter gesture only if clicking on an URL

Otherwise it would still consume the press+release, making the overall
notification unable to handle activation.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8799
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3954>

12 months agoUpdate Turkish translation
Emin Tufan Çetin [Wed, 5 Nov 2025 19:54:23 +0000 (19:54 +0000)]
Update Turkish translation

12 months agotimeLimitsManager: Integrate with malcontent and lock when limit reached
Ignacy Kuchciński [Mon, 18 Aug 2025 09:58:50 +0000 (11:58 +0200)]
timeLimitsManager: Integrate with malcontent and lock when limit reached

Lock the screen when screen time limit is reached in a child session,
which required extending the existing TimeLimitsManager functionality to
include the parental controls session limits.

TimeLimitsDispatcher was also adjusted to take into account parental
controls session limits before making any user facing changes.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/work_items/8575
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agotimeLimitsManager: Convert unix times to ISO 8601
Ignacy Kuchciński [Tue, 4 Nov 2025 22:07:54 +0000 (23:07 +0100)]
timeLimitsManager: Convert unix times to ISO 8601

Convert unix epoch times to ISO 8601 formatted strings for logging
purposes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agotimeLimitsManager: Rename function updating state machine
Ignacy Kuchciński [Mon, 27 Oct 2025 23:53:41 +0000 (00:53 +0100)]
timeLimitsManager: Rename function updating state machine

Rename _updateSettings function to _updateStateMachine, since that's
what the function actually does, starting or stopping the machine
depending on the 'history-enabled' GSetting. Moreover, in the future
we'll take into account parental controls settings too, so renaming the
function to be more generic will avoid confusion later on.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agotests/unit: Add a helper method in TimeLimitsManager
Ignacy Kuchciński [Thu, 28 Aug 2025 09:23:15 +0000 (11:23 +0200)]
tests/unit: Add a helper method in TimeLimitsManager

Currently we create a new `TimeLimitsManager` for each of the unit tests
for testing the wellbeing screen time limit, with the same parameters.
Rather than having to repeat the entire constructor call multiple times,
factor it out into a helper method on the `TestHarness`. There is no
difference in functionality itself.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agotimeLimitsManager: Clean up property description
Ignacy Kuchciński [Fri, 22 Aug 2025 13:49:35 +0000 (15:49 +0200)]
timeLimitsManager: Clean up property description

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agodbus-interfaces: Add MalcontentTimer child interface
Ignacy Kuchciński [Mon, 18 Aug 2025 09:54:57 +0000 (11:54 +0200)]
dbus-interfaces: Add MalcontentTimer child interface

Add org.freedesktop.MalcontentTimer1.Child interface for accessing the
screen time and app usage periods for current user account. Currently
unused, will provide necessary functionality when integrating parental
controls session limits with TimeLimitsManager.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agoparentalControlsManager: Add support for session limits
Ignacy Kuchciński [Mon, 18 Aug 2025 09:44:42 +0000 (11:44 +0200)]
parentalControlsManager: Add support for session limits

Add ability to check if session limits are enabled for users using API
introduced in malcontent 0.14.0. The `get_session_limits_async` function
is actually available since 0.5.0, but the signal
`session-limits-changed` was only introduced in 0.14.0, so check for
function `get_daily_limit` which was introduced in 0.14.0 to be sure
we're using correct version. This allows us to keep filtering apps, even
if the library version doesn't fully support session limits.

Will be used in the future to integrate parental controls session
limits.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3841>

12 months agoDrop restarting capapbility
Bilal Elmoussaoui [Tue, 4 Nov 2025 14:41:49 +0000 (15:41 +0100)]
Drop restarting capapbility

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3768>

12 months agoAdapt to dropped X11 backend
Bilal Elmoussaoui [Tue, 4 Nov 2025 13:08:38 +0000 (14:08 +0100)]
Adapt to dropped X11 backend

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3768>

12 months agograbHelper: Port to using ClickGesture to dismiss
Carlos Garnacho [Wed, 8 Oct 2025 18:36:39 +0000 (20:36 +0200)]
grabHelper: Port to using ClickGesture to dismiss

There's a few things we don't need anymore here. We don't
need holding on the captured events until button release
anymore, and we don't need to track crossing events outside
the grab as those will not get emitted as usual. This allows
for a few simplifications in handling the events for the
GrabHelper.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agograbHelper: Drop unused method
Carlos Garnacho [Wed, 8 Oct 2025 18:10:51 +0000 (20:10 +0200)]
grabHelper: Drop unused method

This was meant for widgets that don't exist anymore, we
do not need to explicitly ignore button releases anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoappDisplay: Drop dead function call
Carlos Garnacho [Wed, 8 Oct 2025 18:08:31 +0000 (20:08 +0200)]
appDisplay: Drop dead function call

We call this menu manager method that does nothing. We
can remove this method and the single call in the codebase.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoibusCandidatePopup: Use click gesture to activate candidates
Carlos Garnacho [Wed, 8 Oct 2025 17:58:40 +0000 (19:58 +0200)]
ibusCandidatePopup: Use click gesture to activate candidates

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agowindowMenu: Use click gesture for window menu source actor
Carlos Garnacho [Wed, 8 Oct 2025 17:51:41 +0000 (19:51 +0200)]
windowMenu: Use click gesture for window menu source actor

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoshellEntry: Use click gesture for entry menu
Carlos Garnacho [Wed, 8 Oct 2025 17:48:01 +0000 (19:48 +0200)]
shellEntry: Use click gesture for entry menu

Use a single gesture in the capture phase, we don't need
more than that, and we don't overlap with ClutterText event
handling.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agosearchController: Maybe reset search using a click gesture
Carlos Garnacho [Wed, 8 Oct 2025 17:37:04 +0000 (19:37 +0200)]
searchController: Maybe reset search using a click gesture

We don't want the gesture to consume input though, we just want
it as a trigger on click, so use the ::may-recognize signal to
hook this "reset, but passthrough" behavior on.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agooverview: Drop ::event connection in the cover pane
Carlos Garnacho [Wed, 8 Oct 2025 17:17:06 +0000 (19:17 +0200)]
overview: Drop ::event connection in the cover pane

We don't need an event handler on this widget to have it cover
other actors from receiving input.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agomessageList: Port URLHighlighter to using a click gesture
Carlos Garnacho [Wed, 8 Oct 2025 16:24:10 +0000 (18:24 +0200)]
messageList: Port URLHighlighter to using a click gesture

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agopopupMenu: Port switches to using a pan gesture
Carlos Garnacho [Wed, 8 Oct 2025 16:10:13 +0000 (18:10 +0200)]
popupMenu: Port switches to using a pan gesture

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agopanelMenu: Port to using ClickGesture
Carlos Garnacho [Fri, 26 Sep 2025 03:25:15 +0000 (05:25 +0200)]
panelMenu: Port to using ClickGesture

Only enable this gesture if a menu is set, so there's no
overlap with other gestures in buttons without a menu (e.g.
the ActivitiesButton).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agopanel: Use ClickGesture at ActivitiesButton for activation
Carlos Garnacho [Fri, 26 Sep 2025 03:23:10 +0000 (05:23 +0200)]
panel: Use ClickGesture at ActivitiesButton for activation

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agostatus/remoteAccess: Port to click gestures
Carlos Garnacho [Fri, 26 Sep 2025 03:01:01 +0000 (05:01 +0200)]
status/remoteAccess: Port to click gestures

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoslider: Use actor relative coordinates when dragging
Carlos Garnacho [Fri, 26 Sep 2025 02:42:47 +0000 (04:42 +0200)]
slider: Use actor relative coordinates when dragging

Stop working on absolute coordinates here, this is not necessary.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoslider: Port to using a pan gesture
Carlos Garnacho [Fri, 26 Sep 2025 02:38:56 +0000 (04:38 +0200)]
slider: Port to using a pan gesture

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoscreenshot: Port SelectArea to using pan gesture
Carlos Garnacho [Fri, 26 Sep 2025 02:58:06 +0000 (04:58 +0200)]
screenshot: Port SelectArea to using pan gesture

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agoscreenshot: Don't special case resetting cursor
Carlos Garnacho [Wed, 8 Oct 2025 10:00:49 +0000 (12:00 +0200)]
screenshot: Don't special case resetting cursor

The case expressed in the comment does not seem to apply anymore,
we can reset the cursor as expected on every leave event.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3912>

12 months agosearch: Center name label vertically
Florian Müllner [Tue, 4 Nov 2025 15:14:37 +0000 (16:14 +0100)]
search: Center name label vertically

If all search results of the provider are shown, the "x more" label
is hidden, and the name label has more space than it needs.

Center the label vertically in that case to align with the icon.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8793
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3951>

12 months agotools: Update ci-run-eslint
Florian Müllner [Wed, 2 Jul 2025 14:32:09 +0000 (16:32 +0200)]
tools: Update ci-run-eslint

We are currently still using eslint 8.x which has been unsupported
for quite a while. Update the ci-run-eslint script to a verison
that uses the supported eslint 9.x.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3938>

12 months agoworkspaceThumbnails: Add missing return values to later handlers
Florian Müllner [Mon, 3 Nov 2025 11:50:34 +0000 (12:50 +0100)]
workspaceThumbnails: Add missing return values to later handlers

MetaLaters are source functions, and should therefore return a bool
to indicate whether the source should be removed or continue.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3950>

12 months agojs: Always use SOURCE_CONTINUE/SOURCE_REMOVE in later handlers
Florian Müllner [Mon, 3 Nov 2025 11:49:12 +0000 (12:49 +0100)]
js: Always use SOURCE_CONTINUE/SOURCE_REMOVE in later handlers

The constants are more self-explanatory (and therefore readable)
then plain true/false.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3950>

12 months agobuild/tests: Run shell tests in parallel
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:04:04 +0000 (05:04 +0100)]
build/tests: Run shell tests in parallel

There's no reason why this is not the case, given that these tests are
running in completely separated environments, so they are safe to run in
parallel

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3943>